什麼是網路爬蟲
爬蟲是一個程式
這個程式可以做什麼?
可以模擬人類瀏覽網頁的行為,從中獲取網頁上所需的數據
比較口語化的說法是可以代替你自動從網站中取得資料,幾個優點如下,包括
- 不需要時時刻刻盯著各大網站的重要訊息,才能獲取第一手資料
- 從重複copy&paste的過程中解放
- 獲得好幾個重要小幫手?
爬蟲可以解決什麼問題
爬蟲有很多的應用,從文章所述優點舉例說明
不需要時時刻刻盯著各大網站的重要訊息,才能獲取第一手資料
很多租屋族都希望可以抽到社會住宅,但是社會住宅的公告其實是不定期的,常常得知社會住宅釋出時,已經是公告抽籤結果了。此時爬蟲就可以自動幫你監看政府住宅單位的公告,只要政府一公佈消息就即時通知你,讓你能夠短時間內就上網填寫申請表單,不用再時不時上網查詢。
從重複copy&paste的過程中解放
上班族應該都有經驗是有些報告或分析需要定期產出,部分資料需要重複擷取網站數據,再一筆筆複製貼到excel中最後產製結果。如果只有十幾筆很快即能完成,但假使複製的數據來自各網頁且有幾百筆以上的話,就會淪為複製貼上的機器人,手動執行還可能貼錯,而爬蟲就能幫你從這樣呆板的行為中解放,讓你可以多出更多時間優化報告內容。
獲得好幾個重要小幫手
愛看演唱會的粉絲應該深有體驗,演唱會門票開搶之際常常可能5分鐘之內售罄,此時簡直恨不得可以多10幾隻手從好幾台手機或電腦下手開搶。而擁有爬蟲,就能在搶票時多好幾個小幫手協助自己自動搶票,成為搶票達人不再是夢想,當然前提是機器效能夠高。
爬蟲小知識 - 爬蟲名稱由來
網路爬蟲(web crawler),也被稱蜘蛛,「web spider」
爬蟲,指的是在程式在網路中爬行,一步一步找到所需的數據
蜘蛛,指的是網際網路就像一張大網,程式就像蜘蛛一樣,會在這張網上到處爬行,最後將資料擷取下來
從網頁取得數據的流程
無論是人為或是程式,當我們從網頁獲取資料時,大致的步驟如下:
假設我們想知道博客來2021年度百大暢銷榜有哪些書? 博客來2021年度百大暢銷榜
進入博客來網頁:每個我們使用的服務都有一個入口,在這裡先稱為網頁入口,即網頁連結,從瀏覽器中點擊百大暢銷榜的連結
資料的站點:資料的位置不一定放在入口網頁的伺服器上,假設博客來除了入口伺服器外,後台有五台機器,排行榜的資料放在第三台機器上
要資料:當我們點擊連結的那一刻,瀏覽器就向博客來的伺服器索取資料
給資料:當取得資料後,伺服器開始回傳
結果:瀏覽器取得回傳後的資料,並呈現於設備上讓我們瀏覽
補充:
- 至此從網頁獲取資料的過程就結束了,但在博客來後台每台機器都是可以相通的,也就是說今天資料不管放在第幾台機器上,只要有開放我們都能取得
- 後台的五台機器們,就是俗稱的內網(區域網路),可以看流程圖上五台機器間之間的連結就像一張網,而外網(公用網路),就是各種開放給外部使用服務的組成,內網加上外網,則形成我們所熟知的網路
如何入門
如果你沒有程式的基礎,可以從文章瞭解爬蟲的概念後,透過Octoparse入門實作
Octoparse 為自動化爬蟲生成工具,詳細可參考Octoparse 官網
優點:
- 圖形化介面
- 無需有程式背景基礎
- 可利用拖曳方式自動將資料擷取下來
缺點:
- 14天免費試用期
- 執行速度相較一般爬蟲程式慢
- 可能無法實現擷取網頁細節內容
如果你有程式基礎,或希望學習程式建立屬於自己的爬蟲工具,可依照使用場景與需求,自行選擇適合的程式語言。
一般初學者建議從python入手,原因如下:
- 相較其他程式語言C#或java,簡單易學,較可以快速上手
- python的生態圈很廣,因此當學習有問題時,不怕找不到學習資源,且已有很多大神寫好很多套件供使用
- python的分布式框架較完善,當有大量的爬蟲需求時建議使用
- python為目前主流成熟度高處理數據的程式語言,有相當多處理與分析數據的套件支援,若有後續處理數據的需求會相當推薦
爬蟲禮儀
雖然網路資源很多是對外開放,但為了避免爬蟲程式在短時間內快速爬取而造成對方伺服器負擔,在爬蟲的過程中,有些需要注意的細節
- 避免爬取頻率過高或過量
- 遵守robots.txt協議的規範,瞭解哪一類的資源可供爬取,規範可參考維基百科 robots.txt
評論